//// demo_prog/chapter5/demo5_10.c
//% LDFLAGS -lm
// 为了演示在很大的素数上的处理效果，所有整数用long型表示（与教材不同）。
#include <stdio.h>
#include <math.h>
#define lSTART 100
#define lEND 200
int main(void)
{
    long lN = 0;
    long lX = 0;
    double dUpperBound = 0.0;
    // 外层循环遍历100~200之间的每一个数lN
    for(lN = lSTART; lN <= lEND; lN++)
    {
        dUpperBound = sqrt((double)lN);
        // 用内层循环判断是否是素数
        for(lX = 2; (double)lX <= dUpperBound; lX++)
        {
            if ((lN % lX) == 0)
            {
                break; // 不是素数，提前结束整个循环
            }
        }
        if (!((double)lX <= dUpperBound))
        {
            // 如果是素数就输出
            printf("%ld is a prime.\n", lN);
        }
    }
    return 0;
}